package Logica;

import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author juandmm
 */
public final class InventarioProductos implements ProductoColeccion {
    private static InventarioProductos inventarioProd;
    private FabricaIF fabricaIF;
    private List<Producto> productos = null;
    
    private InventarioProductos(){
        setFabrica(new Fabrica());
    	productos = new ArrayList<Producto>();
        this.adicionarProductoAInventario("Libro");
        this.adicionarProductoAInventario("Jean");
        this.adicionarProductoAInventario("Blusa");
        this.adicionarProductoAInventario("Brasier");
        this.adicionarProductoAInventario("Libro");
        this.adicionarProductoAInventario("Chaqueta");
    }
    
    public ProductoIterador iterador() {
        return new InventarioProductoIterador();
    }
    
    public static InventarioProductos getInstance(){
        if(inventarioProd==null){
                inventarioProd = new InventarioProductos();
        }
        return inventarioProd;
    }

    public void adicionarProductoAInventario(String tipo){
        productos.add(getFabrica().crearProducto(tipo));
    }

    /**
        * @return the fabrica
        */
    public FabricaIF getFabrica() {
        return fabricaIF;
    }

    /**
        * @param fabrica the fabrica to set
        */
    public void setFabrica(FabricaIF fabrica) {
        this.fabricaIF = fabrica;
    }
    
    private class InventarioProductoIterador implements ProductoIterador {
 
        private int index = 0;
 
        public boolean hasNext() {
            if(index < productos.size()) {
                return true;
            }
            return false;
        }
 
        @Override
        public Producto next() {
            return productos.get(index++);
        }
 
        @Override
        public Producto current() {
            return productos.get(index);
        }

        @Override
        public Producto first() {
            return productos.get(0);
        }
    }
}